#!/bin/bash
# 故障恢复系统停止脚本
# 生成时间: {{ ansible_date_time.iso8601 }}

set -e

# 配置变量
PID_FILE="{{ failover_data_dir }}/monitoring.pid"
LOG_DIR="{{ failover_log_dir }}"
LOG_FILE="$LOG_DIR/monitoring.log"

echo "停止故障恢复系统..."

# 检查PID文件是否存在
if [ ! -f "$PID_FILE" ]; then
    echo "PID文件不存在，系统可能未运行"
    exit 0
fi

# 读取PID
PID=$(cat "$PID_FILE")

# 检查进程是否存在
if ! kill -0 "$PID" 2>/dev/null; then
    echo "进程 $PID 不存在，清理PID文件"
    rm -f "$PID_FILE"
    exit 0
fi

echo "正在停止进程 $PID..."

# 尝试优雅停止
kill "$PID" 2>/dev/null || true

# 等待进程结束
for i in {1..10}; do
    if ! kill -0 "$PID" 2>/dev/null; then
        echo "进程已成功停止"
        rm -f "$PID_FILE"
        echo "[$(date '+%Y-%m-%d %H:%M:%S')] 故障恢复系统已停止" >> "$LOG_FILE"
        exit 0
    fi
    echo "等待进程停止... ($i/10)"
    sleep 1
done

# 强制停止
echo "强制停止进程..."
kill -9 "$PID" 2>/dev/null || true
sleep 1

if ! kill -0 "$PID" 2>/dev/null; then
    echo "进程已强制停止"
    rm -f "$PID_FILE"
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] 故障恢复系统已强制停止" >> "$LOG_FILE"
else
    echo "错误: 无法停止进程 $PID" >&2
    exit 1
fi